<!DOCTYPE html>
<html lang="zh-CN">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>016布尔_null_undefined_typeof</title>
</head>

<body>
    <h1>016布尔_null_undefined_typeof</h1>
    <script>
        // 1 boolean类型

        /* 
            2 undefined类型
                表示声明了变量但未赋值。
                实际开发中，基本不会手动将变量赋值为undefined。
                实际开发中，声明一个变量，等待传送过来的数据。可以通过判断该变量是否为undefined而判断是否有数据传递过来。
        */
        let age // 声明了变量age但未赋值，age默认为undefined。

        /* 
            3 null类型
                表示“无”，“空”，“值未知”。即声明了一个变量，也赋值了，但值为null。
                实际开发中，声明一个变量，未来会用它来存放对象，因此先用null表示。
                js垃圾回收机制也是通过null来释放不再使用的内存。
        */
        let obj = null

        // 4 undefined和null的区别
        console.log(undefined == null) // true
        console.log(undefined === null) // false
        console.log(null + 1) // 1
        console.log(undefined + 1) // NaN

        /*
            5 typeof运算符
                typeof xxx
                typeof(xxx)
        */
        console.log(typeof 123) // number
        console.log(typeof '123') // string
        console.log(typeof true) // boolean
        console.log(typeof undefined) // undefined
        console.log(typeof null) // object
        console.log(typeof {}) // object
        console.log(typeof []) // object
    </script>
</body>

</html>